From 0db13f117e558686838c4177bedd1acd107f8bdf Mon Sep 17 00:00:00 2001 From: Alex Williamson Date: Fri, 18 Jan 2008 13:55:26 -0700 Subject: [PATCH] [IA64] Use rcu where possible. This is for consistency. Signed-off-by: Isaku Yamahata --- xen/arch/ia64/vmx/vmx_hypercall.c | 14 +++++++------- xen/arch/ia64/xen/dom0_ops.c | 25 ++++++++++++------------- xen/arch/ia64/xen/mm.c | 19 +++++++++---------- 3 files changed, 28 insertions(+), 30 deletions(-) diff --git a/xen/arch/ia64/vmx/vmx_hypercall.c b/xen/arch/ia64/vmx/vmx_hypercall.c index ff91969549..5f79cb59d1 100644 --- a/xen/arch/ia64/vmx/vmx_hypercall.c +++ b/xen/arch/ia64/vmx/vmx_hypercall.c @@ -53,7 +53,7 @@ static int hvmop_set_isa_irq_level( if ( op.isa_irq > 15 ) return -EINVAL; - d = get_domain_by_id(op.domid); + d = rcu_lock_domain_by_id(op.domid); if ( d == NULL ) return -ESRCH; @@ -65,7 +65,7 @@ static int hvmop_set_isa_irq_level( viosapic_set_irq(d, op.isa_irq, op.level); out: - put_domain(d); + rcu_unlock_domain(d); return rc; } @@ -85,7 +85,7 @@ static int hvmop_set_pci_intx_level( if ( (op.domain > 0) || (op.bus > 0) || (op.device > 31) || (op.intx > 3) ) return -EINVAL; - d = get_domain_by_id(op.domid); + d = rcu_lock_domain_by_id(op.domid); if ( d == NULL ) return -ESRCH; @@ -97,7 +97,7 @@ static int hvmop_set_pci_intx_level( viosapic_set_pci_irq(d, op.device, op.intx, op.level); out: - put_domain(d); + rcu_unlock_domain(d); return rc; } @@ -122,10 +122,10 @@ do_hvm_op(unsigned long op, XEN_GUEST_HANDLE(void) arg) return -EINVAL; if (a.domid == DOMID_SELF) { - d = get_current_domain(); + d = rcu_lock_current_domain(); } else if (IS_PRIV(current->domain)) { - d = get_domain_by_id(a.domid); + d = rcu_lock_domain_by_id(a.domid); if (d == NULL) return -ESRCH; } @@ -167,7 +167,7 @@ do_hvm_op(unsigned long op, XEN_GUEST_HANDLE(void) arg) rc = copy_to_guest(arg, &a, 1) ? -EFAULT : 0; } - put_domain(d); + rcu_unlock_domain(d); break; } diff --git a/xen/arch/ia64/xen/dom0_ops.c b/xen/arch/ia64/xen/dom0_ops.c index 87cf572807..56c23c7e0d 100644 --- a/xen/arch/ia64/xen/dom0_ops.c +++ b/xen/arch/ia64/xen/dom0_ops.c @@ -44,7 +44,7 @@ long arch_do_domctl(xen_domctl_t *op, XEN_GUEST_HANDLE(xen_domctl_t) u_domctl) case XEN_DOMCTL_getmemlist: { unsigned long i; - struct domain *d = get_domain_by_id(op->domain); + struct domain *d = rcu_lock_domain_by_id(op->domain); unsigned long start_page = op->u.getmemlist.start_pfn; unsigned long nr_pages = op->u.getmemlist.max_pfns; uint64_t mfn; @@ -72,15 +72,14 @@ long arch_do_domctl(xen_domctl_t *op, XEN_GUEST_HANDLE(xen_domctl_t) u_domctl) op->u.getmemlist.num_pfns = i; if (copy_to_guest(u_domctl, op, 1)) ret = -EFAULT; - - put_domain(d); + rcu_unlock_domain(d); } break; case XEN_DOMCTL_arch_setup: { xen_domctl_arch_setup_t *ds = &op->u.arch_setup; - struct domain *d = get_domain_by_id(op->domain); + struct domain *d = rcu_lock_domain_by_id(op->domain); if ( d == NULL) { ret = -EINVAL; @@ -155,7 +154,7 @@ long arch_do_domctl(xen_domctl_t *op, XEN_GUEST_HANDLE(xen_domctl_t) u_domctl) } } - put_domain(d); + rcu_unlock_domain(d); } break; @@ -163,11 +162,11 @@ long arch_do_domctl(xen_domctl_t *op, XEN_GUEST_HANDLE(xen_domctl_t) u_domctl) { struct domain *d; ret = -ESRCH; - d = get_domain_by_id(op->domain); + d = rcu_lock_domain_by_id(op->domain); if ( d != NULL ) { ret = shadow_mode_control(d, &op->u.shadow_op); - put_domain(d); + rcu_unlock_domain(d); if (copy_to_guest(u_domctl, op, 1)) ret = -EFAULT; } @@ -182,7 +181,7 @@ long arch_do_domctl(xen_domctl_t *op, XEN_GUEST_HANDLE(xen_domctl_t) u_domctl) unsigned int lp = fp + np - 1; ret = -ESRCH; - d = get_domain_by_id(op->domain); + d = rcu_lock_domain_by_id(op->domain); if (unlikely(d == NULL)) break; @@ -195,7 +194,7 @@ long arch_do_domctl(xen_domctl_t *op, XEN_GUEST_HANDLE(xen_domctl_t) u_domctl) ret = ioports_deny_access(d, fp, lp); } - put_domain(d); + rcu_unlock_domain(d); } break; @@ -205,7 +204,7 @@ long arch_do_domctl(xen_domctl_t *op, XEN_GUEST_HANDLE(xen_domctl_t) u_domctl) struct vcpu *v; ret = -ESRCH; - d = get_domain_by_id(op->domain); + d = rcu_lock_domain_by_id(op->domain); if ( d == NULL ) break; @@ -234,7 +233,7 @@ long arch_do_domctl(xen_domctl_t *op, XEN_GUEST_HANDLE(xen_domctl_t) u_domctl) } sendtrigger_out: - put_domain(d); + rcu_unlock_domain(d); } break; @@ -347,7 +346,7 @@ long arch_do_domctl(xen_domctl_t *op, XEN_GUEST_HANDLE(xen_domctl_t) u_domctl) case XEN_DOMCTL_set_opt_feature: { struct xen_ia64_opt_feature *optf = &op->u.set_opt_feature.optf; - struct domain *d = get_domain_by_id(op->domain); + struct domain *d = rcu_lock_domain_by_id(op->domain); if (d == NULL) { ret = -EINVAL; @@ -355,7 +354,7 @@ long arch_do_domctl(xen_domctl_t *op, XEN_GUEST_HANDLE(xen_domctl_t) u_domctl) } ret = domain_opt_feature(d, optf); - put_domain(d); + rcu_unlock_domain(d); } break; diff --git a/xen/arch/ia64/xen/mm.c b/xen/arch/ia64/xen/mm.c index efb564cfa9..53e6623de8 100644 --- a/xen/arch/ia64/xen/mm.c +++ b/xen/arch/ia64/xen/mm.c @@ -1473,7 +1473,7 @@ __dom0vp_add_physmap(struct domain* d, unsigned long gpfn, if (flags & (ASSIGN_nocache | ASSIGN_pgc_allocated)) return -EINVAL; - rd = get_domain_by_id(domid); + rd = rcu_lock_domain_by_id(domid); if (unlikely(rd == NULL)) { switch (domid) { case DOMID_XEN: @@ -1489,7 +1489,7 @@ __dom0vp_add_physmap(struct domain* d, unsigned long gpfn, return -ESRCH; } BUG_ON(rd == NULL); - get_knownalive_domain(rd); + rcu_lock_domain(rd); } if (unlikely(rd == d)) @@ -1512,7 +1512,7 @@ __dom0vp_add_physmap(struct domain* d, unsigned long gpfn, //don't update p2m table because this page belongs to rd, not d. perfc_incr(dom0vp_add_physmap); out1: - put_domain(rd); + rcu_unlock_domain(rd); return error; } @@ -2785,17 +2785,16 @@ arch_memory_op(int op, XEN_GUEST_HANDLE(void) arg) if (copy_from_guest(&xatp, arg, 1)) return -EFAULT; - if (xatp.domid == DOMID_SELF) { - d = get_current_domain(); - } + if (xatp.domid == DOMID_SELF) + d = rcu_lock_current_domain(); else if (!IS_PRIV(current->domain)) return -EPERM; - else if ((d = get_domain_by_id(xatp.domid)) == NULL) + else if ((d = rcu_lock_domain_by_id(xatp.domid)) == NULL) return -ESRCH; /* This hypercall is used for VT-i domain only */ if (!VMX_DOMAIN(d->vcpu[0])) { - put_domain(d); + rcu_unlock_domain(d); return -ENOSYS; } @@ -2821,7 +2820,7 @@ arch_memory_op(int op, XEN_GUEST_HANDLE(void) arg) } if (mfn == 0) { - put_domain(d); + rcu_unlock_domain(d); return -EINVAL; } @@ -2853,7 +2852,7 @@ arch_memory_op(int op, XEN_GUEST_HANDLE(void) arg) out: UNLOCK_BIGLOCK(d); - put_domain(d); + rcu_unlock_domain(d); break; } -- 2.30.2